Programmierung: ImageManager-Library

2. Juli 1999, 15:30 GMT+1

Am 30. Juni 1999 hat Allan Odgaard(IProbe, MCC_BetterString) mit der "ImageManager-Library" einen Vorschlag f�r ein OOP-System zur Dekodierung und Anzeige von Grafiken vorgestellt.

Allan Odgaard entwickelt derzeit mit IProbe einen WWW-Browser. Als er damit begann ging er davon aus, da� er sich nicht um die Dekodierung, das Dithering und die Anzeige von Grafiken k�mmern br�uchte, da daf�r die entsprechenden Datatypes existieren. Diese besitzen aber leider einige Einschr�nkungen. So lassen sich hiermit nur Grafiken anzeigen, die als Datei vorliegen. So m�ssen die Bilder zun�chst vollst�ndig �bers Netz geladen, dann als Datei abgespeichert und erst dann k�nnen sie angezeigt werden. Eine progressive(inkrementelle) Anzeige wie von Web-Browsern gewohnt ist damit nicht m�glich. So mu�te er hierf�r seine eigenen Routinen schreiben. Dieses System m�chte er nun ver�ffentlichen. Dabei m�chte er sicherstellen, da� das Design fehlerfrei ist und bittet um Reaktionen auf seinen Vorschlag.

Das System besteht aus der ImageManager-Library und zahlreichen BOOPSI-Klassen. Dies erlaubt es, anderen, weitere Klassen hinzuzuf�gen oder speziellere Unterklassen zu entwickeln. Die Objekte dieser einzelnen Klassen lassen sich miteinander verbinden. Sie bilden dadurch eine Kette, die Schritt f�r Schritt eine Bildquelle(z.B. Datei) dekodiert und sie bis zum Ziel(Rastport) zur Anzeige weiterleitet.

Buffer -> Base64Decoder -> ImageDecoder -> Scaler -> Dither -> BitMap -> RastPort

Jedes Objekt erh�lt damit die Daten in einen bestimmten Format und kann diese in einen anderen ans n�chste Objekt weitergeben.

Als Ausgangsklassen gibt es u.a. die File.class f�r Dateien, die Buffer.class f�r Daten aus dem Speicher, die Socket.class f�r Daten aus dem Netz oder die Pipe.class f�r Daten aus einer Pipe oder einfach nur ein Objekt, da� ein Testbild zur Verf�gung stellt.

Um das System zu vereinfachen gibt es die Container-Klasse, die die ben�tigte Kette zusammenstellt.

Mittels der Progress-Klasse, die einen Hook aufruft wenn Daten durch sich hindurchwandern, l��t sich der Ablauf der Daten verfolgen, ohne da� man selbst eine Unterklasse erstellen mu�.

Dieses flexible System erlaubt die m�helose, progressive Dekodierung und Darstellung von Bildern aus verschiedenen Quellen, in verschiedenen Formaten.

Bleibt die Frage, ob die Daten durch die Kette gezogen(Pull) oder geschoben(Push) werden sollen. Beim Pull w�rde das letzte Objekt der Kette solange nach Daten fragen bis das Bild komplett angezeigt ist und jedes Objekt der Kette diese Anfrage an das vorhergehende Objekt weiterleiten.

F�r Dateien oder Buffer ist dieses Modell ideal, da die Daten schon komplett vorliegen und immer nur dann angefordert werden, wenn das letzte Objekt weitere ben�tigt.

Beim Pull w�rde das erste Objekt die Daten in die Kette schicken und jedes Objekt diese ans nachfolgende weiterleiten.

Dieses Modell ist besser f�r aus Netzen stammenden Daten geeignet, da diese schubweise aus dem Netz kommen.

Wer Ideen und Vorschl�ge f�r dieses System hat oder es einfach nur gut findet kann eine E-Mail an Allan Odgaard(Duff@DIKU.DK) mit "ImageManager.library" im Betreff schicken.

Hersteller

Name Allan Odgaard
Post Allan Odgaard
Snail: Dagmarsgade 36
2200 Copenhagen
Denmark
E-MailDuff@DIKU.DK
WWWhttp://www.diku.dk/students/duff/

Quelle

(SD)